home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 3: Developer Tools / Linux Cubed Series 3 - Developer Tools.iso / devel / lang / tcl / xf2.3-p / xf2 / xf2.3 / elements / Menu < prev    next >
Encoding:
Text File  |  1994-01-05  |  59.6 KB  |  1,507 lines

  1. # Program: xf
  2. # Description: handle menu widgets
  3. #
  4. # $Header: Menu[2.4] Wed Mar 10 11:58:55 1993 garfield@garfield frozen $
  5.  
  6. global xfDefaultConf
  7. set xfDefaultConf(menu) 5
  8. global xfStatus
  9. set xfStatus(menuCounter) 0
  10.  
  11. ##########
  12. # Procedure: XFAdd.Menu
  13. # Description: add a menu
  14. # Arguments: xfW - the widget
  15. #            xfName - a optional name
  16. #            xfType - add or config
  17. # Returns: none
  18. # Sideeffects: none
  19. ##########
  20. proc XFAdd.Menu {xfW xfName xfType} {
  21.   global xfStatus
  22.  
  23.   XFEditSetStatus "Inserting Menu..."
  24.   set xfName [XFMiscGetUniqueName $xfName menu]
  25.   if {"$xfStatus(path)" == "."} {
  26.     menu .$xfName
  27.     MenuPopupAdd . 3 .$xfName
  28.  
  29.     XFMiscBindWidgetTree .$xfName
  30.   } {
  31.     menu $xfStatus(path).$xfName
  32.     MenuPopupAdd . 3 $xfStatus(path).$xfName
  33.  
  34.     XFMiscBindWidgetTree $xfStatus(path).$xfName
  35.   }
  36.  
  37.   incr xfStatus(elementCounter)
  38.   XFEditSetPath $xfStatus(path)
  39.   XFEditSetStatus "Inserting Menu...done"
  40. }
  41.  
  42. ##########
  43. # Procedure: XFConfig.Menu4
  44. # Description: configure a menu
  45. # Arguments: xfW - the widget
  46. #            xfType - config type (add config)
  47. #            xfClass - the class we configure
  48. #            xfLeader - the leading window
  49. # Returns: none
  50. # Sideeffects: none
  51. ##########
  52. proc XFConfig.Menu4 {xfW xfType xfClass {xfLeader ""}} {
  53.   global tkVersion
  54.   global xfConf
  55.   global xfStatus
  56.  
  57.   set xfName [XFMiscPathName $xfW]
  58.   XFEditSetStatus "Calling parameter setting for Menu..."
  59.  
  60.   # build widget structure
  61.   XFTmpltToplevel .xf${xfClass}Config4 400x570 \
  62.     "Menu parameters:[XFMiscPathTail $xfW]" $xfLeader
  63.  
  64.   XFElementInit $xfW .xf${xfClass}Config4 $xfType $xfClass XFMenuSetMenu4 \
  65.     parameters $xfName 4
  66.   XFElementColor $xfW .xf${xfClass}Config4 $xfType $xfClass abg \
  67.     activeBackground Background "Active background" XFMenuSetMenu4
  68.   XFElementScale $xfW .xf${xfClass}Config4 $xfType $xfClass aborderwidth \
  69.     activeBorderWidth BorderWidth "Active border width" "pixels" 40 \
  70.     XFMenuSetMenu4
  71.   XFElementColor $xfW .xf${xfClass}Config4 $xfType $xfClass afg \
  72.     activeForeground Foreground "Active foreground" XFMenuSetMenu4
  73.   XFElementColor $xfW .xf${xfClass}Config4 $xfType $xfClass bg \
  74.     background Background "Background" XFMenuSetMenu4
  75.   XFElementScale $xfW .xf${xfClass}Config4 $xfType $xfClass borderwidth \
  76.     borderWidth BorderWidth "Border width" "pixels" 40 XFMenuSetMenu4
  77.   XFElementCursor $xfW .xf${xfClass}Config4 $xfType $xfClass XFMenuSetMenu4
  78.   XFElementColor $xfW .xf${xfClass}Config4 $xfType $xfClass dfg \
  79.     disabledForeground Foreground "Disabled foreground" XFMenuSetMenu4
  80.   XFElementFont $xfW .xf${xfClass}Config4 $xfType $xfClass font \
  81.     font Font "Font" XFMenuSetMenu4
  82.   if {$xfConf(kanji)} {
  83.     XFElementFont $xfW .xf${xfClass}Config4 $xfType $xfClass kanjifont \
  84.       kanjiFont KanjiFont "Kanji font" XFMenuSetMenu4
  85.   }
  86.   XFElementColor $xfW .xf${xfClass}Config4 $xfType $xfClass fg \
  87.     foreground Foreground "Foreground" XFMenuSetMenu4
  88.   XFElementColor $xfW .xf${xfClass}Config4 $xfType $xfClass selector \
  89.     selector Foreground "Selector" XFMenuSetMenu4
  90.   if {$tkVersion >= 3.1} {
  91.     XFElementCommand $xfW .xf${xfClass}Config4 $xfType 1
  92.   }
  93.  
  94.   # save current parameter
  95.   if {$tkVersion >= 3.1} {
  96.     if {$xfConf(kanji)} {
  97.       XFElementSave $xfW $xfClass {activebackground activeborderwidth activeforeground background borderwidth cursor disabledforeground font kanjifont foreground postcommand selector}
  98.     } {
  99.       XFElementSave $xfW $xfClass {activebackground activeborderwidth activeforeground background borderwidth cursor disabledforeground font foreground postcommand selector}
  100.     }
  101.   } {
  102.     if {$xfConf(kanji)} {
  103.       XFElementSave $xfW $xfClass {activebackground activeborderwidth activeforeground background borderwidth cursor disabledforeground font kanjifont foreground selector}
  104.     } {
  105.       XFElementSave $xfW $xfClass {activebackground activeborderwidth activeforeground background borderwidth cursor disabledforeground font foreground selector}
  106.     }
  107.   }
  108.  
  109.   # packing
  110.   if {"$xfType" != "add"} {
  111.     pack unpack .xf${xfClass}Config4.additional.packing
  112.   }
  113.  
  114.   pack append .xf${xfClass}Config4.params1 \
  115.               .xf${xfClass}Config4.params1.params2 {left fill expand}
  116.   pack append .xf${xfClass}Config4 \
  117.               .xf${xfClass}Config4.pathname {top fill frame center} \
  118.               .xf${xfClass}Config4.leave {bottom fill} \
  119.               .xf${xfClass}Config4.additional {bottom fill} \
  120.               .xf${xfClass}Config4.params1 {top fill expand}
  121.  
  122.   XFBindFormConnect .xf${xfClass}Config4.params1.params2 \
  123.     "XFMenuSetMenu4 $xfW 0 $xfClass"
  124.  
  125.   XFEditSetStatus "Calling parameter setting for Menu...done"
  126. }
  127.  
  128. ##########
  129. # Procedure: XFConfig.Menu5
  130. # Description: configure a menu
  131. # Arguments: xfW - the widget
  132. #            xfType - config type (add config)
  133. #            xfClass - the class we configure
  134. #            xfLeader - the leading window
  135. # Returns: none
  136. # Sideeffects: none
  137. ##########
  138. proc XFConfig.Menu5 {xfW xfType xfClass {xfLeader ""}} {
  139.   global tkVersion
  140.   global xfBind
  141.   global xfConf
  142.   global xfMisc
  143.   global xfStatus
  144.  
  145.   set xfMC $xfStatus(menuCounter)
  146.   set xfMisc(menuStatus,$xfMC) normal
  147.   set xfMisc(menu,$xfMC,menuDef) ""
  148.   set xfMisc(menu,$xfMC,saveMenu) ""
  149.   set xfStatus(menuType,$xfMC) "<command> "
  150.  
  151.   foreach xfCounter [winfo children .] {
  152.     if {![catch "winfo ismapped $xfCounter.params1.params2.frame1.elements.elem1"]} {
  153.       if {"[winfo class $xfCounter.params1.params2.name.name]" == "Label"} {
  154.         set xfTmpName [lindex [$xfCounter.params1.params2.name.name config -text] 4]
  155.       } {
  156.         set xfTmpName [$xfCounter.params1.params2.name.name get]
  157.       }
  158.       if {"$xfW" == "[lindex [$xfCounter.pathname.pathname.pathname configure -text] 4].$xfTmpName"} {
  159.         return
  160.       }
  161.     }
  162.   }
  163.   # create menu if it does not exist
  164.   if {"[info commands $xfW]" == ""} {
  165.     menu $xfW
  166.   }
  167.   if {"$xfType" == "add"} {
  168.     set xfName menu$xfStatus(elementCounter)
  169.   } {
  170.     set xfName [XFMiscPathName $xfW]
  171.   }
  172.   XFEditSetStatus "Calling parameter setting for Menu..."
  173.  
  174.   # build widget structure
  175.   XFTmpltToplevel .xf${xfClass}Config5$xfMC 490x580 \
  176.     "Menu parameters:[XFMiscPathTail $xfW]" $xfLeader
  177.  
  178.   XFElementInit $xfW .xf${xfClass}Config5$xfMC $xfType $xfClass \
  179.     XFMenuSetMenu5 parameters $xfName 5
  180.  
  181.   XFTmpltFrame .xf${xfClass}Config5$xfMC.params1.params2.frame1 0
  182.  
  183.   XFTmpltFrame .xf${xfClass}Config5$xfMC.params1.params2.frame1.children 0
  184.  
  185.   XFTmpltFrame .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements 0
  186.  
  187.   XFTmpltFrame \
  188.     .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem1 0
  189.  
  190.   XFTmpltFrame \
  191.     .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2 0
  192.  
  193.   XFTmpltFrame .xf${xfClass}Config5$xfMC.params1.params2.commands 0
  194.  
  195.   menubutton .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem1.entries \
  196.     -text {Menu entry:} \
  197.     -underline {0} \
  198.     -menu ".xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem1.entries.m"
  199.  
  200.   menu .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem1.entries.m
  201.   .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem1.entries.m \
  202.     add radiobutton \
  203.       -label {Cascadebutton} \
  204.       -variable xfStatus(menuType,$xfMC) \
  205.       -value "<cascade> " \
  206.       -underline 1 \
  207.       -command "XFMenuSetItems $xfMC cascade $xfClass"
  208.   .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem1.entries.m \
  209.     add radiobutton \
  210.       -label {Checkbutton} \
  211.       -variable xfStatus(menuType,$xfMC) \
  212.       -value "<checkbutton> " \
  213.       -underline 1 \
  214.       -command "XFMenuSetItems $xfMC check $xfClass"
  215.   .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem1.entries.m \
  216.     add radiobutton \
  217.       -label {Commandbutton} \
  218.       -variable xfStatus(menuType,$xfMC) \
  219.       -value "<command> " \
  220.       -underline 0 \
  221.       -command "XFMenuSetItems $xfMC command $xfClass"
  222.   .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem1.entries.m \
  223.     add radiobutton \
  224.       -label {Radiobutton} \
  225.       -variable xfStatus(menuType,$xfMC) \
  226.       -value "<radiobutton> " \
  227.       -underline 0 \
  228.       -command "XFMenuSetItems $xfMC radio $xfClass"
  229.   .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem1.entries.m \
  230.     add radiobutton \
  231.       -label {Separator} \
  232.       -variable xfStatus(menuType,$xfMC) \
  233.       -value "<separator> " \
  234.       -underline 0 \
  235.       -command "XFMenuSetItems $xfMC separator $xfClass"
  236.   
  237.   label \
  238.     .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem1.message1 \
  239.       -anchor w \
  240.       -text {Commandbutton}
  241.   
  242.   button .xf${xfClass}Config5$xfMC.params1.params2.commands.insert \
  243.     -text {Insert} \
  244.     -command "
  245.       XFMenuInsertItem $xfMC $xfClass
  246.       XFMenuHandleCascade $xfW $xfMC $xfClass"
  247.  
  248.   button .xf${xfClass}Config5$xfMC.params1.params2.commands.modify \
  249.     -text {Modify} \
  250.     -command "
  251.       XFMenuModifyItem $xfMC $xfClass
  252.       XFMenuHandleCascade $xfW $xfMC $xfClass"
  253.  
  254.   button .xf${xfClass}Config5$xfMC.params1.params2.commands.delete \
  255.     -text {Delete} \
  256.     -command "
  257.       XFMenuDeleteItem $xfW $xfMC $xfClass
  258.       XFMenuSetMenu5 $xfW 0 $xfClass $xfMC"
  259.  
  260.   button .xf${xfClass}Config5$xfMC.params1.params2.commands.down \
  261.     -state disabled \
  262.     -text {Cascade down} \
  263.     -command "
  264.       XFMenuHandleCascade $xfW $xfMC $xfClass cascade $xfLeader"
  265.  
  266.   XFTmpltLabledEntry \
  267.     .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2 \
  268.       abg "Active bg:"
  269.  
  270.   XFTmpltLabledEntry \
  271.     .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2 \
  272.       accelerator "Accelerator:"
  273.  
  274.   XFTmpltLabledEntry \
  275.     .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2 \
  276.       bg "Background:"
  277.  
  278.   XFTmpltLabledEntry \
  279.     .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2 \
  280.       bitmap "Bitmap:"
  281.  
  282.   XFTmpltLabledEntry \
  283.     .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2 \
  284.       font "Font:"
  285.  
  286.   if {$xfConf(kanji)} {
  287.     XFTmpltLabledEntry \
  288.       .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2 \
  289.         kanjifont "Kanji font:"
  290.   }
  291.  
  292.   XFTmpltLabledEntry \
  293.     .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2 \
  294.       label "Label:"
  295.  
  296.   XFTmpltLabledEntry \
  297.     .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2 \
  298.       menu "Menu:"
  299.  
  300.   XFTmpltLabledEntry \
  301.     .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2 \
  302.       offvalue "Off value:"
  303.  
  304.   XFTmpltLabledEntry \
  305.     .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2 \
  306.       onvalue "On value:"
  307.  
  308.   XFTmpltFrame \
  309.     .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.state 0
  310.  
  311.   label \
  312.    .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.state.message1 \
  313.     -anchor w \
  314.     -relief raised \
  315.     -text "State:"
  316.  
  317.   radiobutton \
  318.     .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.state.normal \
  319.     -text "Normal" \
  320.     -variable xfMisc(menuStatus,$xfMC)
  321.  
  322.   radiobutton \
  323.     .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.state.active \
  324.     -text "Active" \
  325.     -variable xfMisc(menuStatus,$xfMC)
  326.  
  327.   radiobutton \
  328.     .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.state.disabled \
  329.     -text "Disabled" \
  330.     -variable xfMisc(menuStatus,$xfMC)
  331.  
  332.   pack append .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.state \
  333.               .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.state.message1 {left} \
  334.               .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.state.normal {left fillx expand} \
  335.               .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.state.active {left fillx expand} \
  336.               .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.state.disabled {left fillx expand}
  337.  
  338.   XFTmpltScale \
  339.     .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2 \
  340.       underline "Underline:" "" 100
  341.   .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.underline.underline \
  342.     configure \
  343.       -from -1
  344.  
  345.   XFTmpltLabledEntry \
  346.     .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2 \
  347.       value "Value:"
  348.  
  349.   XFTmpltLabledEntry \
  350.     .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2 \
  351.       variable "Variable:"
  352.  
  353.   label \
  354.     .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.message1 \
  355.       -relief raised \
  356.       -text "Command:"
  357.  
  358.   XFTmpltText .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2 \
  359.     command
  360.   XFMiscSetTextHeight \
  361.     .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.command.command 5
  362.  
  363.   label .xf${xfClass}Config5$xfMC.params1.params2.frame1.children.message1 \
  364.     -text {Menu:}
  365.  
  366.   XFTmpltListbox .xf${xfClass}Config5$xfMC.params1.params2.frame1.children \
  367.     items
  368.  
  369.   scale .xf${xfClass}Config5$xfMC.params1.params2.frame1.children.items.mover \
  370.     -orient vertical \
  371.     -width 8 \
  372.     -sliderlength 15 \
  373.     -from 0 \
  374.     -command "
  375.       XFMenuRepositionItem $xfMC $xfClass
  376.       XFMenuSetMenu5 $xfW 0 $xfClass $xfMC"
  377.   pack before .xf${xfClass}Config5$xfMC.params1.params2.frame1.children.items.vscroll \
  378.               .xf${xfClass}Config5$xfMC.params1.params2.frame1.children.items.mover {right filly}
  379.   
  380.   if {"$xfType" == "add"} {
  381.     .xf${xfClass}Config5$xfMC.leave.ok configure \
  382.       -command "
  383.         global xfMisc
  384.         global xfStatus
  385.         XFMiscSetSymbolicName $xfW \
  386.           \[.xf${xfClass}Config5$xfMC.params1.params2.symname.symname get\]
  387.         if {\"\[winfo class .xf${xfClass}Config4.params1.params2.name.name\]\" == \"Label\"} {
  388.           set xfTmpName \[lindex \[.xf${xfClass}Config5$xfMC.params1.params2.name.name config -text\] 4\]
  389.         } {
  390.           set xfTmpName \[.xf${xfClass}Config5$xfMC.params1.params2.name.name get\]
  391.         }
  392.         if {\"\$xfTmpName\" != \"\"} {
  393.           XFAdd.Menu $xfW \$xfTmpName config
  394.           if {\"\$xfStatus(path)\" == \".\"} {
  395.             XFMenuSetMenu5 .\$xfTmpName 1 $xfClass $xfMC
  396.           } {
  397.             XFMenuSetMenu5 \$xfStatus(path).\$xfTmpName 1 $xfClass $xfMC
  398.           }
  399.         }
  400.         unset xfMisc(menu,$xfMC,menuDef)
  401.         unset xfMisc(menu,$xfMC,saveMenu)
  402.         unset xfStatus(menuType,$xfMC)
  403.         destroy .xf${xfClass}Config5$xfMC"
  404.  
  405.     .xf${xfClass}Config5$xfMC.leave.apply configure \
  406.       -state disabled
  407.  
  408.     .xf${xfClass}Config5$xfMC.leave.applyperm configure \
  409.       -state disabled
  410.  
  411.     .xf${xfClass}Config5$xfMC.leave.cancel configure \
  412.       -command "
  413.         global xfMisc
  414.         global xfStatus
  415.         unset xfMisc(menu,$xfMC,menuDef)
  416.         unset xfMisc(menu,$xfMC,saveMenu)
  417.         unset xfStatus(menuType,$xfMC)
  418.         destroy .xf${xfClass}Config5$xfMC"
  419.   } {
  420.     .xf${xfClass}Config5$xfMC.leave.ok configure \
  421.       -command "
  422.         global xfMisc
  423.         global xfStatus
  424.         XFMenuSetMenu5 $xfW 1 $xfClass $xfMC
  425.         unset xfMisc(menu,$xfMC,menuDef)
  426.         unset xfMisc(menu,$xfMC,saveMenu)
  427.         unset xfStatus(menuType,$xfMC)
  428.         destroy .xf${xfClass}Config5$xfMC"
  429.  
  430.     .xf${xfClass}Config5$xfMC.leave.apply configure \
  431.       -command "XFMenuSetMenu5 $xfW 1 $xfClass $xfMC"
  432.  
  433.     .xf${xfClass}Config5$xfMC.leave.applyperm configure \
  434.       -command "XFMenuSetMenu5 $xfW 0 $xfClass $xfMC"
  435.  
  436.     .xf${xfClass}Config5$xfMC.leave.cancel configure \
  437.       -command "
  438.         global xfMisc
  439.         global xfStatus
  440.         set xfCounter 0
  441.         set xfLast \[$xfW index last\]
  442.         if {\"\$xfLast\" == \"none\"} {
  443.           set xfLast -1
  444.         }
  445.         while {\$xfCounter <= \$xfLast} {
  446.           $xfW delete 0
  447.           incr xfCounter 1
  448.         }
  449.         if {\[info exists xfMisc(menu,$xfMC,saveMenu)\]} {
  450.           foreach xfCounter \$xfMisc(menu,$xfMC,saveMenu) {
  451.             catch \"\$xfCounter\"
  452.           }
  453.         }
  454.         unset xfMisc(menu,$xfMC,menuDef)
  455.         unset xfMisc(menu,$xfMC,saveMenu)
  456.         unset xfStatus(menuType,$xfMC)
  457.         destroy .xf${xfClass}Config5$xfMC"
  458.   }
  459.  
  460.   if {"$xfType" == "add"} {
  461.     .xf${xfClass}Config5$xfMC.additional.more configure \
  462.       -state disabled
  463.     .xf${xfClass}Config5$xfMC.additional.binding configure \
  464.       -state disabled
  465.   }
  466.  
  467.   XFMenuReadMenu $xfW $xfMC $xfClass
  468.  
  469.   case [lindex [.xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem1.message1 config -text] 4] in {
  470.     {Cascadebutton} {
  471.       .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem1.entries.m invoke 0
  472.     }
  473.     {Checkbutton} {
  474.       .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem1.entries.m invoke 1
  475.     }
  476.     {Radiobutton} {
  477.       .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem1.entries.m invoke 3
  478.     }
  479.     {Separator} {
  480.       .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem1.entries.m invoke 4
  481.     }
  482.     {default} {
  483.       .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem1.entries.m invoke 2
  484.     }
  485.   }
  486.  
  487.   XFMenuSetItem $xfMC $xfClass
  488.  
  489.   if {$tkVersion >= 3.0} {
  490.     tk_menuBar .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem1 \
  491.                .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem1.entries
  492.   } {
  493.     tk_menus .xf${xfClass}Config5$xfMC \
  494.              .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem1.entries
  495.   }
  496.  
  497.   XFElementSave $xfW $xfClass {}
  498.  
  499.   # bindings
  500.   bind .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.abg.abg $xfBind(configure) \
  501.     "XFProcColorBox activebackground .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.abg.abg"
  502.  
  503.   bind .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.bg.bg $xfBind(configure) \
  504.     "XFProcColorBox  background .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.bg.bg"
  505.  
  506.   bind .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.bitmap.bitmap $xfBind(configure) \
  507.     "XFProcFSBoxPixmap .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.bitmap.bitmap"
  508.  
  509.   bind .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.font.font $xfBind(configure) \
  510.     "XFProcFontBox font .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.font.font"
  511.  
  512.   if {$xfConf(kanji)} {
  513.     bind .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.kanjifont.kanjifont $xfBind(configure) \
  514.       "XFProcFontBox kanjifont .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.kanjifont.kanjifont"
  515.   }
  516.  
  517.   bind .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.variable.variable $xfBind(configure) \
  518.     "XFProcProgGlobals .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.variable.variable"
  519.  
  520.   bind .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.command.command $xfBind(configure) \
  521.     "XFProcProgCommands .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.command.command"
  522.  
  523.   bind .xf${xfClass}Config5$xfMC.params1.params2.frame1.children.items.items $xfBind(select1) "
  524.     XFBindSelectOne %W %y
  525.     XFMenuSetItem $xfMC $xfClass"
  526.   bind .xf${xfClass}Config5$xfMC.params1.params2.frame1.children.items.items <ButtonPress-1> "
  527.     XFBindSelectOne %W %y
  528.     XFMenuSetItem $xfMC $xfClass"
  529.   bind .xf${xfClass}Config5$xfMC.params1.params2.frame1.children.items.items <Button1-Motion> "
  530.     XFBindSelectOne %W %y
  531.     XFMenuSetItem $xfMC $xfClass"
  532.   bind .xf${xfClass}Config5$xfMC.params1.params2.frame1.children.items.items <Shift-ButtonPress-1> "
  533.     XFBindSelectOne %W %y
  534.     XFMenuSetItem $xfMC $xfClass"
  535.   bind .xf${xfClass}Config5$xfMC.params1.params2.frame1.children.items.items <Shift-Button1-Motion> "
  536.     XFBindSelectOne %W %y
  537.     XFMenuSetItem $xfMC $xfClass"
  538.  
  539.   # packing
  540.   pack unpack .xf${xfClass}Config5$xfMC.additional.packing
  541.   pack append .xf${xfClass}Config5$xfMC.params1.params2.commands \
  542.               .xf${xfClass}Config5$xfMC.params1.params2.commands.insert {left fill expand} \
  543.               .xf${xfClass}Config5$xfMC.params1.params2.commands.modify {left fill expand} \
  544.               .xf${xfClass}Config5$xfMC.params1.params2.commands.delete {left fill expand} \
  545.               .xf${xfClass}Config5$xfMC.params1.params2.commands.down {left fill expand}
  546.  
  547.   pack append .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem1 \
  548.               .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem1.entries {left fill} \
  549.               .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem1.message1 {left fillx expand}
  550.  
  551.   pack append .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements \
  552.               .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem1 {top fill} \
  553.               .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2 {top fill expand}
  554.  
  555.   pack append .xf${xfClass}Config5$xfMC.params1.params2.frame1.children \
  556.               .xf${xfClass}Config5$xfMC.params1.params2.frame1.children.message1 {top frame center} \
  557.               .xf${xfClass}Config5$xfMC.params1.params2.frame1.children.items {left fill expand}
  558.  
  559.   place .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements \
  560.     -in .xf${xfClass}Config5$xfMC.params1.params2.frame1 \
  561.     -relx 0 \
  562.     -rely 0 \
  563.     -relheight 1.0 \
  564.     -relwidth 0.5
  565.  
  566.   place .xf${xfClass}Config5$xfMC.params1.params2.frame1.children \
  567.     -in .xf${xfClass}Config5$xfMC.params1.params2.frame1 \
  568.     -relx 0.5 \
  569.     -rely 0 \
  570.     -relheight 1.0 \
  571.     -relwidth 0.5
  572.  
  573.   pack append .xf${xfClass}Config5$xfMC.params1.params2 \
  574.               .xf${xfClass}Config5$xfMC.params1.params2.commands {bottom fill} \
  575.               .xf${xfClass}Config5$xfMC.params1.params2.frame1 {top fill expand}
  576.   pack append .xf${xfClass}Config5$xfMC.params1 \
  577.               .xf${xfClass}Config5$xfMC.params1.params2 {left fill expand}
  578.   pack append .xf${xfClass}Config5$xfMC \
  579.               .xf${xfClass}Config5$xfMC.pathname {top fill frame center} \
  580.               .xf${xfClass}Config5$xfMC.leave {bottom fill} \
  581.               .xf${xfClass}Config5$xfMC.additional {bottom fill} \
  582.               .xf${xfClass}Config5$xfMC.params1 {top fill expand}
  583.  
  584.   XFBindFormConnect .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2
  585.  
  586.   incr xfStatus(menuCounter)
  587.   XFEditSetStatus "Calling parameter setting for Menu...done"
  588. }
  589.  
  590. ##########
  591. # Procedure: XFSaveWidget.Menu
  592. # Description: save menu
  593. # Arguments: xfOutFile - the output file
  594. #            xfW - the widget
  595. # Returns: none
  596. # Sideeffects: none
  597. ##########
  598. proc XFSaveWidget.Menu {xfOutFile xfW} {
  599.   global xfConf
  600.  
  601.   set xfClass [winfo class $xfW]
  602.   set xfType [string tolower $xfClass]
  603.  
  604.   # what are we doing here ?
  605.   puts $xfOutFile "\n  # build widget $xfW"
  606.  
  607.   # write widget type and path name
  608.   puts $xfOutFile "  $xfType $xfW" nonewline
  609.   XFSaveWidgetResource $xfOutFile $xfW
  610.   puts $xfOutFile ""
  611.  
  612.   # get index of last menu item
  613.   set xfLastMenu [$xfW index last]
  614.   if {"$xfLastMenu" != "none"} {
  615.     for {set xfCounter 0} {$xfCounter <= $xfLastMenu} {incr xfCounter 1} {
  616.       puts $xfOutFile "  $xfW add [XFMenuEntryType $xfW $xfCounter]" nonewline
  617.       foreach option [$xfW entryconfigure $xfCounter] {
  618.         # only handle options with 5 items per option entry
  619.         if {[llength $option] == 5} {
  620.           if {"[lindex $option 3]" != "[lindex $option 4]"} {
  621.             puts $xfOutFile " \\\n    [lindex $option 0] {[lindex $option 4]}" nonewline
  622.           }
  623.         }
  624.       }
  625.       puts $xfOutFile ""
  626.     }
  627.   }
  628. }
  629.  
  630. ##########
  631. # Procedure: XFMenuDeleteItem
  632. # Description: delete currently selected item
  633. # Arguments: xfW - the widget to configure
  634. #            xfMC - the edit menu counter
  635. #            xfClass - the class we configure
  636. # Returns: none
  637. # Sideeffects: none
  638. ##########
  639. proc XFMenuDeleteItem {xfW xfMC xfClass} {
  640.   global xfMisc
  641.  
  642.   set xfCurSelected \
  643.     [.xf${xfClass}Config5$xfMC.params1.params2.frame1.children.items.items curselection]
  644.   if {$xfCurSelected >= 0} {
  645.     # clean up cascade submenus
  646.     if {[string match "<cascade>*" \
  647.           [.xf${xfClass}Config5$xfMC.params1.params2.frame1.children.items.items get $xfCurSelected]] &&
  648.         "[lindex [lindex $xfMisc(menu,$xfMC,menuDef) $xfCurSelected] 7]" != ""} {
  649.       foreach xfCounter [winfo children $xfW] {
  650.         if {"$xfCounter" == "[lindex [lindex $xfMisc(menu,$xfMC,menuDef) $xfCurSelected] 7]"} {
  651.           catch "XFDestroy [lindex [lindex $xfMisc(menu,$xfMC,menuDef) $xfCurSelected] 7]"
  652.         }
  653.       }
  654.     }
  655.  
  656.     # delete item from lists
  657.     .xf${xfClass}Config5$xfMC.params1.params2.frame1.children.items.items \
  658.       delete $xfCurSelected
  659.     set xfMisc(menu,$xfMC,menuDef) \
  660.       [lreplace $xfMisc(menu,$xfMC,menuDef) $xfCurSelected $xfCurSelected]
  661.  
  662.     # reposition the mover
  663.     if {[.xf${xfClass}Config5$xfMC.params1.params2.frame1.children.items.items size] > 0} {
  664.       .xf${xfClass}Config5$xfMC.params1.params2.frame1.children.items.mover configure \
  665.         -to [.xf${xfClass}Config5$xfMC.params1.params2.frame1.children.items.items size]
  666.     } {
  667.     .xf${xfClass}Config5$xfMC.params1.params2.frame1.children.items.mover configure \
  668.       -to 1
  669.     }
  670.   }
  671. }
  672.  
  673. ##########
  674. # Procedure: XFMenuEntryType
  675. # Description: determine the type of a menu item
  676. # Arguments: xfW - the widget
  677. #            xfPosition - index of item in menu
  678. # Returns: item type
  679. # Sideeffects: none
  680. ##########
  681. proc XFMenuEntryType {xfW xfPosition} {
  682.  
  683.   if {![catch "$xfW entryconfig $xfPosition -menu"]} {
  684.     return "cascade"
  685.   } {
  686.     if {![catch "$xfW entryconfig $xfPosition -value"]} {
  687.       return "radiobutton"
  688.     } {
  689.       if {![catch "$xfW entryconfig $xfPosition -onvalue"]} {
  690.         return "checkbutton"
  691.       } {
  692.         if {![catch "$xfW entryconfig $xfPosition -command"]} {
  693.           return "command"
  694.         } {
  695.           return "separator"
  696.         }
  697.       }
  698.     }
  699.   }
  700. }
  701.  
  702. ##########
  703. # Procedure: XFMenuHandleCascade
  704. # Description: handle cascade items
  705. # Arguments: xfW - the widget we configure
  706. #            xfMC - the edit menu counter
  707. #            xfClass - the class we edit
  708. #            xfType - the type of handling
  709. #            xfLeader - the leading window
  710. # Returns: none
  711. # Sideeffects: none
  712. ##########
  713. proc XFMenuHandleCascade {xfW xfMC xfClass {xfType ""} {xfLeader ""}} {
  714.   global xfMisc
  715.  
  716.   XFMenuSetMenu5 $xfW 0 $xfClass $xfMC
  717.   set xfCreate 1
  718.   set xfCurSel \
  719.     [.xf${xfClass}Config5$xfMC.params1.params2.frame1.children.items.items curselect]
  720.   if {$xfCurSel >= 0 && [string match "<cascade>*" \
  721.         [.xf${xfClass}Config5$xfMC.params1.params2.frame1.children.items.items get $xfCurSel]] == 1 &&
  722.       "[lindex [lindex $xfMisc(menu,$xfMC,menuDef) $xfCurSel] 7]" != ""} {
  723.     foreach xfCounter [winfo children $xfW] {
  724.       if {"$xfCounter" == "[lindex [lindex $xfMisc(menu,$xfMC,menuDef) $xfCurSel] 7]"} {
  725.         set xfCreate 0
  726.       }
  727.     }
  728.     set xfResultCode 0
  729.     set xfResult ""
  730.     if {$xfCreate == 1} {
  731.       set xfResultCode [catch "menu [lindex [lindex $xfMisc(menu,$xfMC,menuDef) $xfCurSel] 7]" xfResult]
  732.     }
  733.     if {"$xfType" == "cascade"} {
  734.       if {$xfResultCode != 0} {
  735.         XFProcError "$xfResult"
  736.       } {
  737.         XFConfig.Menu5 [lindex [lindex $xfMisc(menu,$xfMC,menuDef) $xfCurSel] 7] \
  738.           $xfType $xfClass $xfLeader
  739.       }
  740.     }
  741.   }
  742. }
  743.  
  744. ##########
  745. # Procedure: XFMenuInsertItem
  746. # Description: insert currently edited parameters
  747. # Arguments: xfMC - the edit menu counter
  748. #            xfClass - the class we configure
  749. #            xfIndex - the target location in the menu
  750. # Returns: none
  751. # Sideeffects: none
  752. ##########
  753. proc XFMenuInsertItem {xfMC xfClass {xfIndex ""}} {
  754.   global xfConf
  755.   global xfMisc
  756.   global xfStatus
  757.  
  758.   if {"$xfIndex" == ""} {
  759.     set xfIndex [expr [llength $xfMisc(menu,$xfMC,menuDef)]+10]
  760.   }
  761.   .xf${xfClass}Config5$xfMC.params1.params2.frame1.children.items.items insert $xfIndex \
  762.       "[set xfStatus(menuType,$xfMC)][.xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.label.label get]"
  763.     set xfNewItem ""
  764.     lappend xfNewItem \
  765.       [.xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.abg.abg get]
  766.     lappend xfNewItem \
  767.       [.xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.accelerator.accelerator get]
  768.     lappend xfNewItem \
  769.       [.xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.bg.bg get]
  770.     lappend xfNewItem \
  771.       [.xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.bitmap.bitmap get]
  772.     lappend xfNewItem \
  773.       [XFMiscGetText .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.command.command]
  774.     lappend xfNewItem \
  775.       [.xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.font.font get]
  776.     lappend xfNewItem \
  777.       [.xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.label.label get]
  778.     lappend xfNewItem \
  779.       [.xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.menu.menu get]
  780.     lappend xfNewItem \
  781.       [.xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.offvalue.offvalue get]
  782.     lappend xfNewItem \
  783.       [.xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.onvalue.onvalue get]
  784.     lappend xfNewItem \
  785.       [set xfMisc(menuStatus,$xfMC)]
  786.     lappend xfNewItem \
  787.       [.xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.underline.underline get]
  788.     lappend xfNewItem \
  789.       [.xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.value.value get]
  790.     lappend xfNewItem \
  791.       [.xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.variable.variable get]
  792.     if {$xfConf(kanji)} {
  793.       lappend xfNewItem \
  794.         [.xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.kanjifont.kanjifont get]
  795.     }
  796.     set xfMisc(menu,$xfMC,menuDef) \
  797.       [linsert $xfMisc(menu,$xfMC,menuDef) $xfIndex $xfNewItem]
  798.  
  799.   # set mover
  800.   .xf${xfClass}Config5$xfMC.params1.params2.frame1.children.items.mover \
  801.     configure \
  802.       -to [.xf${xfClass}Config5$xfMC.params1.params2.frame1.children.items.items size]
  803.   .xf${xfClass}Config5$xfMC.params1.params2.frame1.children.items.items \
  804.     select from $xfIndex 
  805.   .xf${xfClass}Config5$xfMC.params1.params2.frame1.children.items.items \
  806.     select to $xfIndex 
  807.  
  808.   set xfCurSelected \
  809.     [.xf${xfClass}Config5$xfMC.params1.params2.frame1.children.items.items curselection]
  810.   if {$xfCurSelected >= 0} {
  811.     case [.xf${xfClass}Config5$xfMC.params1.params2.frame1.children.items.items get $xfCurSelected] in {
  812.       {<cascade*} {
  813.         .xf${xfClass}Config5$xfMC.params1.params2.commands.down conf \
  814.           -state normal
  815.       }
  816.       {<check*} {
  817.         .xf${xfClass}Config5$xfMC.params1.params2.commands.down conf \
  818.           -state disabled
  819.       }
  820.       {<radio*} {
  821.         .xf${xfClass}Config5$xfMC.params1.params2.commands.down conf \
  822.           -state disabled
  823.       }
  824.       {<separator*} {
  825.         .xf${xfClass}Config5$xfMC.params1.params2.commands.down conf \
  826.           -state disabled
  827.       }
  828.       {default} {
  829.         .xf${xfClass}Config5$xfMC.params1.params2.commands.down conf \
  830.           -state disabled
  831.       }
  832.     }
  833.   }
  834. }
  835.  
  836. ##########
  837. # Procedure: XFMenuModifyItem
  838. # Description: modify currently edited item
  839. # Arguments: xfMC - the edit menu counter
  840. #            xfClass - the class we configure
  841. # Returns: none
  842. # Sideeffects: none
  843. ##########
  844. proc XFMenuModifyItem {xfMC xfClass} {
  845.   global xfMisc
  846.  
  847.   set xfIndex [.xf${xfClass}Config5$xfMC.params1.params2.frame1.children.items.items curselect]
  848.   if {"$xfIndex" != ""} {
  849.     # delete old item
  850.     .xf${xfClass}Config5$xfMC.params1.params2.frame1.children.items.items \
  851.       delete $xfIndex
  852.     set xfMisc(menu,$xfMC,menuDef) \
  853.       [lreplace $xfMisc(menu,$xfMC,menuDef) $xfIndex $xfIndex]
  854.  
  855.     # insert again
  856.     XFMenuInsertItem $xfMC $xfClass $xfIndex
  857.  
  858.     .xf${xfClass}Config5$xfMC.params1.params2.frame1.children.items.items \
  859.       select from $xfIndex 
  860.     .xf${xfClass}Config5$xfMC.params1.params2.frame1.children.items.items \
  861.       select to $xfIndex 
  862.   }
  863. }
  864.  
  865. ##########
  866. # Procedure: XFMenuReadMenu
  867. # Description: read current menu, and insert it into the lists
  868. # Arguments: xfW - the widget we configure 
  869. #            xfMC - the edit menu counter
  870. #            xfClass - the class we configure
  871. # Returns: none
  872. # Sideeffects: none
  873. ##########
  874. proc XFMenuReadMenu {xfW xfMC xfClass} {
  875.   global xfConf
  876.   global xfMisc
  877.  
  878.   set xfLast [$xfW index last]
  879.   if {"$xfLast" == "none"} {
  880.     set xfLast -1
  881.   }
  882.   for {set xfCounter 0} {$xfCounter <= $xfLast} {incr xfCounter 1} {
  883.     set xfOptionString "$xfW add [XFMenuEntryType $xfW $xfCounter] "
  884.     foreach xfOption [$xfW entryconfigure $xfCounter] {
  885.       if {[llength $xfOption] == 5} {
  886.         if {"[lindex $xfOption 3]" != "[lindex $xfOption 4]"} {
  887.           append xfOptionString " [lindex $xfOption 0] {[lindex $xfOption 4]}"
  888.         }
  889.       }
  890.     }
  891.     set xfNewItem ""
  892.     lappend xfMisc(menu,$xfMC,saveMenu) $xfOptionString
  893.     if {"[XFMenuEntryType $xfW $xfCounter]" == "separator"} {
  894.       .xf${xfClass}Config5$xfMC.params1.params2.frame1.children.items.items \
  895.         insert end "<[XFMenuEntryType $xfW $xfCounter]>"
  896.       lappend xfNewItem "" "" "" "" "" "" "" "" "" "" "" "" "" ""
  897.       set xfMisc(menu,$xfMC,menuDef) \
  898.         [linsert $xfMisc(menu,$xfMC,menuDef) \
  899.           [expr [llength $xfMisc(menu,$xfMC,menuDef)]+10] $xfNewItem]
  900.     } {
  901.       .xf${xfClass}Config5$xfMC.params1.params2.frame1.children.items.items \
  902.         insert end \
  903.           "<[XFMenuEntryType $xfW $xfCounter]> [lindex [$xfW entryconfigure $xfCounter -label] 4]"
  904.       lappend xfNewItem \
  905.         [lindex [$xfW entryconfigure $xfCounter -activebackground] 4]
  906.       lappend xfNewItem \
  907.         [lindex [$xfW entryconfigure $xfCounter -accelerator] 4]
  908.       lappend xfNewItem \
  909.         [lindex [$xfW entryconfigure $xfCounter -background] 4]
  910.       lappend xfNewItem \
  911.         [lindex [$xfW entryconfigure $xfCounter -bitmap] 4]
  912.       lappend xfNewItem \
  913.         [lindex [$xfW entryconfigure $xfCounter -command] 4]
  914.       lappend xfNewItem \
  915.         [lindex [$xfW entryconfigure $xfCounter -font] 4]
  916.       lappend xfNewItem \
  917.         [lindex [$xfW entryconfigure $xfCounter -label] 4]
  918.       if {"[XFMenuEntryType $xfW $xfCounter]" == "cascade"} {
  919.         lappend xfNewItem \
  920.           [lindex [$xfW entryconfigure $xfCounter -menu] 4]
  921.       } {
  922.         lappend xfNewItem ""
  923.       }
  924.       if {"[XFMenuEntryType $xfW $xfCounter]" == "checkbutton"} {
  925.         lappend xfNewItem \
  926.           [lindex [$xfW entryconfigure $xfCounter -offvalue] 4]
  927.         lappend xfNewItem \
  928.           [lindex [$xfW entryconfigure $xfCounter -onvalue] 4]
  929.       } {
  930.         lappend xfNewItem ""
  931.         lappend xfNewItem ""
  932.       }
  933.       lappend xfNewItem \
  934.         [lindex [$xfW entryconfigure $xfCounter -state] 4]
  935.       lappend xfNewItem \
  936.         [lindex [$xfW entryconfigure $xfCounter -underline] 4]
  937.       if {"[XFMenuEntryType $xfW $xfCounter]" == "radiobutton"} {
  938.         lappend xfNewItem \
  939.           [lindex [$xfW entryconfigure $xfCounter -value] 4]
  940.       } {
  941.         lappend xfNewItem ""
  942.       }
  943.       if {"[XFMenuEntryType $xfW $xfCounter]" == "radiobutton" ||
  944.           "[XFMenuEntryType $xfW $xfCounter]" == "checkbutton"} {
  945.         lappend xfNewItem \
  946.           [lindex [$xfW entryconfigure $xfCounter -variable] 4]
  947.       } {
  948.         lappend xfNewItem ""
  949.       }
  950.       if {$xfConf(kanji)} {
  951.         lappend xfNewItem \
  952.           [lindex [$xfW entryconfigure $xfCounter -kanjifont] 4]
  953.       }
  954.       set xfMisc(menu,$xfMC,menuDef) \
  955.         [linsert $xfMisc(menu,$xfMC,menuDef) [expr [llength $xfMisc(menu,$xfMC,menuDef)]+10] $xfNewItem]
  956.     }
  957.   }
  958.  
  959.   if {[.xf${xfClass}Config5$xfMC.params1.params2.frame1.children.items.items size] > 0} {
  960.     .xf${xfClass}Config5$xfMC.params1.params2.frame1.children.items.items \
  961.       select from 0
  962.     .xf${xfClass}Config5$xfMC.params1.params2.frame1.children.items.items \
  963.       select to 0
  964.     XFMenuSetItem $xfMC $xfClass
  965.     .xf${xfClass}Config5$xfMC.params1.params2.frame1.children.items.mover \
  966.       configure \
  967.         -to [.xf${xfClass}Config5$xfMC.params1.params2.frame1.children.items.items size]
  968.   } {
  969.     .xf${xfClass}Config5$xfMC.params1.params2.frame1.children.items.mover \
  970.       configure \
  971.         -to 1
  972.   }
  973. }
  974.  
  975. ##########
  976. # Procedure: XFMenuRepositionItem
  977. # Description: put currently selected item to new position
  978. # Arguments: xfMC - the edit menu counter
  979. #            xfClass - the class we configure
  980. #            xfDummy - nothing
  981. # Returns: none
  982. # Sideeffects: none
  983. ##########
  984. proc XFMenuRepositionItem {xfMC xfClass {xfDummy ""}} {
  985.   global xfMisc
  986.  
  987.   set xfCurSelected \
  988.     [.xf${xfClass}Config5$xfMC.params1.params2.frame1.children.items.items curselection]
  989.   if {$xfCurSelected >= 0} {
  990.     set xfNewPos \
  991.       [.xf${xfClass}Config5$xfMC.params1.params2.frame1.children.items.mover get]
  992.     set xfTmpBuff1 \
  993.       [.xf${xfClass}Config5$xfMC.params1.params2.frame1.children.items.items get $xfCurSelected]
  994.     set xfNewItem \
  995.       [lindex $xfMisc(menu,$xfMC,menuDef) $xfCurSelected]
  996.  
  997.     # delete old item
  998.     .xf${xfClass}Config5$xfMC.params1.params2.frame1.children.items.items \
  999.       delete $xfCurSelected
  1000.     set xfMisc(menu,$xfMC,menuDef) \
  1001.       [lreplace $xfMisc(menu,$xfMC,menuDef) $xfCurSelected $xfCurSelected]
  1002.  
  1003.     # insert at new position
  1004.     .xf${xfClass}Config5$xfMC.params1.params2.frame1.children.items.items \
  1005.       insert $xfNewPos $xfTmpBuff1
  1006.     set xfMisc(menu,$xfMC,menuDef) \
  1007.       [linsert $xfMisc(menu,$xfMC,menuDef) $xfNewPos $xfNewItem]
  1008.  
  1009.     .xf${xfClass}Config5$xfMC.params1.params2.frame1.children.items.items \
  1010.       select from $xfNewPos
  1011.     .xf${xfClass}Config5$xfMC.params1.params2.frame1.children.items.items \
  1012.       select to $xfNewPos
  1013.   }
  1014. }
  1015.  
  1016. ##########
  1017. # Procedure: XFMenuSetItem
  1018. # Description: set item fields to values from currently selected item
  1019. # Arguments: xfMC - the edit menu counter
  1020. #            xfClass - the class we configure
  1021. #            xfParam1 - ignored parameter
  1022. # Returns: none
  1023. # Sideeffects: none
  1024. ##########
  1025. proc XFMenuSetItem {xfMC xfClass {xfParam1 ""}} {
  1026.   global xfConf
  1027.   global xfMisc
  1028.   global xfStatus
  1029.  
  1030.   set xfCurSelected \
  1031.     [.xf${xfClass}Config5$xfMC.params1.params2.frame1.children.items.items curselection]
  1032.   if {$xfCurSelected >= 0} {
  1033.     case [.xf${xfClass}Config5$xfMC.params1.params2.frame1.children.items.items get $xfCurSelected] in {
  1034.       {<cascade*} {
  1035.         .xf${xfClass}Config5$xfMC.params1.params2.commands.down conf \
  1036.           -state normal
  1037.         set xfStatus(menuType,$xfMC) "<cascade> "
  1038.         .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem1.entries.m \
  1039.           entryconfigure 0 -state active
  1040.         XFMenuSetItems $xfMC cascade $xfClass
  1041.       }
  1042.       {<check*} {
  1043.         .xf${xfClass}Config5$xfMC.params1.params2.commands.down conf \
  1044.           -state disabled
  1045.         set xfStatus(menuType,$xfMC) "<checkbutton> "
  1046.         .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem1.entries.m \
  1047.           entryconfigure 1 -state active
  1048.         XFMenuSetItems $xfMC check $xfClass
  1049.       }
  1050.       {<radio*} {
  1051.         .xf${xfClass}Config5$xfMC.params1.params2.commands.down conf \
  1052.           -state disabled
  1053.         set xfStatus(menuType,$xfMC) "<radiobutton> "
  1054.         .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem1.entries.m \
  1055.           entryconfigure 3 -state active
  1056.         XFMenuSetItems $xfMC radio $xfClass
  1057.       }
  1058.       {<separator*} {
  1059.         .xf${xfClass}Config5$xfMC.params1.params2.commands.down conf \
  1060.           -state disabled
  1061.         set xfStatus(menuType,$xfMC) "<separator> "
  1062.         .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem1.entries.m \
  1063.           entryconfigure 4 -state active
  1064.         XFMenuSetItems $xfMC separator $xfClass
  1065.       }
  1066.       {default} {
  1067.         .xf${xfClass}Config5$xfMC.params1.params2.commands.down conf \
  1068.           -state disabled
  1069.         set xfStatus(menuType,$xfMC) "<command> "
  1070.         .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem1.entries.m \
  1071.           entryconfigure 2 -state active
  1072.         XFMenuSetItems $xfMC command $xfClass
  1073.       }
  1074.     }
  1075.  
  1076.     # insert values
  1077.     set xfTmpValue [lindex $xfMisc(menu,$xfMC,menuDef) $xfCurSelected]
  1078.     .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.abg.abg \
  1079.       insert 0 [lindex $xfTmpValue 0]
  1080.     .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.accelerator.accelerator \
  1081.       insert 0 [lindex $xfTmpValue 1]
  1082.     .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.bg.bg \
  1083.       insert 0 [lindex $xfTmpValue 2]
  1084.     .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.bitmap.bitmap \
  1085.       insert 0 [lindex $xfTmpValue 3]
  1086.     XFMiscSetText .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.command.command \
  1087.         [lindex $xfTmpValue 4]
  1088.     .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.font.font \
  1089.       insert 0 [lindex $xfTmpValue 5]
  1090.     .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.label.label \
  1091.       insert 0 [lindex $xfTmpValue 6]
  1092.     if {"[lindex $xfTmpValue 7]" != ""} {
  1093.       .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.menu.menu \
  1094.         delete 0 end
  1095.     }
  1096.     .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.menu.menu \
  1097.       insert 0 [lindex $xfTmpValue 7]
  1098.     .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.offvalue.offvalue \
  1099.       insert 0 [lindex $xfTmpValue 8]
  1100.     .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.onvalue.onvalue \
  1101.       insert 0 [lindex $xfTmpValue 9]
  1102.     set xfMisc(menuStatus,$xfMC) \
  1103.       [lindex $xfTmpValue 10]
  1104.     case [set xfMisc(menuStatus,$xfMC)] in {
  1105.       {active} {
  1106.         .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.state.active select
  1107.       }
  1108.       {disabled} {
  1109.         .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.state.disabled select
  1110.       }
  1111.       {default} {
  1112.         .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.state.normal select
  1113.       }
  1114.     }
  1115.     if {[lindex $xfTmpValue 11] >= 0} {
  1116.       .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.underline.underline \
  1117.         set [lindex $xfTmpValue 11]
  1118.     }
  1119.     .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.value.value \
  1120.       insert 0 [lindex $xfTmpValue 12]
  1121.     .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.variable.variable \
  1122.       insert 0 [lindex $xfTmpValue 13]
  1123.     if {$xfConf(kanji)} {
  1124.       .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.kanjifont.kanjifont \
  1125.         insert 0 [lindex $xfTmpValue 14]
  1126.     }
  1127.   }
  1128. }
  1129.  
  1130. ##########
  1131. # Procedure: XFMenuSetItems
  1132. # Description: set item fields for currently selected widget
  1133. # Arguments: xfMC - the edit menu counter
  1134. #            xfType - the type we want to edit
  1135. #            xfClass - the class we configure
  1136. # Returns: none
  1137. # Sideeffects: none
  1138. ##########
  1139. proc XFMenuSetItems {xfMC xfType xfClass} {
  1140.   global xfConf
  1141.  
  1142.   # remove widgets
  1143.   pack unpack .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.abg
  1144.   pack unpack .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.accelerator
  1145.   pack unpack .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.bg
  1146.   pack unpack .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.bitmap
  1147.   pack unpack .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.message1
  1148.   pack unpack .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.command
  1149.   pack unpack .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.font
  1150.   if {$xfConf(kanji)} {
  1151.     pack unpack .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.kanjifont
  1152.   }
  1153.   pack unpack .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.label
  1154.   pack unpack .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.menu
  1155.   pack unpack .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.offvalue
  1156.   pack unpack .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.onvalue
  1157.   pack unpack .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.state
  1158.   pack unpack .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.underline
  1159.   pack unpack .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.value
  1160.   pack unpack .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.variable
  1161.  
  1162.   # clear entry fields
  1163.   .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.abg.abg \
  1164.     delete 0 end
  1165.   .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.accelerator.accelerator \
  1166.     delete 0 end
  1167.   .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.bg.bg \
  1168.     delete 0 end
  1169.   .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.bitmap.bitmap \
  1170.     delete 0 end
  1171.   XFMiscSetText \
  1172.     .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.command.command ""
  1173.   .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.font.font \
  1174.     delete 0 end
  1175.   if {$xfConf(kanji)} {
  1176.     .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.kanjifont.kanjifont \
  1177.       delete 0 end
  1178.   }
  1179.   .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.label.label \
  1180.     delete 0 end
  1181.   .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.menu.menu \
  1182.     delete 0 end
  1183.   .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.offvalue.offvalue \
  1184.     delete 0 end
  1185.   .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.onvalue.onvalue \
  1186.     delete 0 end
  1187.   .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.state.normal \
  1188.     select
  1189.   .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.underline.underline \
  1190.     set -1
  1191.   .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.value.value \
  1192.     delete 0 end
  1193.   .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.variable.variable \
  1194.     delete 0 end
  1195.  
  1196.   case $xfType in {
  1197.     {cascade} {
  1198.       .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem1.message1 configure -text Cascadebutton
  1199.  
  1200.       if {"[winfo class .xf${xfClass}Config5$xfMC.params1.params2.name.name]" == "Entry"} {
  1201.         if {"[lindex [.xf${xfClass}Config5$xfMC.pathname.pathname.pathname configure -text] 4]" == "."} {
  1202.           .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.menu.menu insert 0 ".[.xf${xfClass}Config5$xfMC.params1.params2.name.name get].m"
  1203.         } {
  1204.           .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.menu.menu insert 0 "[lindex [.xf${xfClass}Config5$xfMC.pathname.pathname.pathname configure -text] 4].[.xf${xfClass}Config5$xfMC.params1.params2.name.name get].m"
  1205.         }
  1206.       } {
  1207.         if {"[lindex [.xf${xfClass}Config5$xfMC.pathname.pathname.pathname configure -text] 4]" == "."} {
  1208.           .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.menu.menu insert 0 ".[lindex [.xf${xfClass}Config5$xfMC.params1.params2.name.name configure -text] 4].m"
  1209.         } {
  1210.           .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.menu.menu insert 0 "[lindex [.xf${xfClass}Config5$xfMC.pathname.pathname.pathname configure -text] 4].[lindex [.xf${xfClass}Config5$xfMC.params1.params2.name.name configure -text] 4].m"
  1211.         }
  1212.       }
  1213.       pack append .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2 \
  1214.                   .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.label {top fillx} \
  1215.                   .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.abg {top fillx} \
  1216.                   .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.accelerator {top fillx} \
  1217.                   .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.bg {top fillx} \
  1218.                   .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.bitmap {top fillx} \
  1219.                   .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.font {top fillx}
  1220.       if {$xfConf(kanji)} {
  1221.         pack append .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2 \
  1222.                     .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.kanjifont {top fillx}
  1223.       }
  1224.       pack append .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2 \
  1225.                   .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.menu {top fill} \
  1226.                   .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.state {top fillx} \
  1227.                   .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.underline {top fillx} \
  1228.                   .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.message1 {top fillx} \
  1229.                   .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.command {top fill}
  1230.     }
  1231.     {check} {
  1232.       .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem1.message1 configure -text Checkbutton
  1233.  
  1234.       pack append .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2 \
  1235.                   .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.label {top fillx} \
  1236.                   .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.abg {top fillx} \
  1237.                   .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.accelerator {top fillx} \
  1238.                   .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.bg {top fillx} \
  1239.                   .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.bitmap {top fillx} \
  1240.                   .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.font {top fillx}
  1241.       if {$xfConf(kanji)} {
  1242.         pack append .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2 \
  1243.                     .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.kanjifont {top fillx}
  1244.       }
  1245.       pack append .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2 \
  1246.                   .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.offvalue {top fillx} \
  1247.                   .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.onvalue {top fillx} \
  1248.                   .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.state {top fillx} \
  1249.                   .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.underline {top fillx} \
  1250.                   .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.variable {top fillx} \
  1251.                   .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.message1 {top fillx} \
  1252.                   .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.command {top fill}
  1253.     }
  1254.     {radio} {
  1255.       .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem1.message1 configure -text Radiobutton
  1256.  
  1257.       pack append .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2 \
  1258.                   .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.label {top fillx} \
  1259.                   .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.abg {top fillx} \
  1260.                   .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.accelerator {top fillx} \
  1261.                   .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.bg {top fillx} \
  1262.                   .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.bitmap {top fillx} \
  1263.                   .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.font {top fillx}
  1264.       if {$xfConf(kanji)} {
  1265.         pack append .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2 \
  1266.                     .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.kanjifont {top fillx}
  1267.       }
  1268.       pack append .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2 \
  1269.                   .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.state {top fillx} \
  1270.                   .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.underline {top fillx} \
  1271.                   .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.value {top fillx} \
  1272.                   .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.variable {top fillx} \
  1273.                   .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.message1 {top fillx} \
  1274.                   .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.command {top fill}
  1275.     }
  1276.     {separator} {
  1277.       .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem1.message1 configure -text Separator
  1278.     }
  1279.     {default} {
  1280.       .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem1.message1 configure -text Commandbutton
  1281.  
  1282.       pack append .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2 \
  1283.                   .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.label {top fillx} \
  1284.                   .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.abg {top fillx} \
  1285.                   .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.accelerator {top fillx} \
  1286.                   .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.bg {top fillx} \
  1287.                   .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.bitmap {top fillx} \
  1288.                   .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.font {top fillx}
  1289.       if {$xfConf(kanji)} {
  1290.         pack append .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2 \
  1291.                     .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.kanjifont {top fillx}
  1292.       }
  1293.       pack append .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2 \
  1294.                   .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.state {top fillx} \
  1295.                   .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.underline {top fillx} \
  1296.                   .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.message1 {top fillx} \
  1297.                   .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2.command {top fill}
  1298.     }
  1299.   }
  1300.   XFBindFormConnect .xf${xfClass}Config5$xfMC.params1.params2.frame1.elements.elem2
  1301. }
  1302.  
  1303. ##########
  1304. # Procedure: XFMenuSetMenu4
  1305. # Description: set menu parameters
  1306. # Arguments: xfW - the widget
  1307. #            xfType - the type of setting (1 = set always, 0 = set
  1308. #                     only if permanent apply is on)
  1309. #            xfClass - the class we configure
  1310. #            xfParam1 - ignored parameter
  1311. # Returns: none
  1312. # Sideeffects: none
  1313. ##########
  1314. proc XFMenuSetMenu4 {xfW xfType xfClass {xfParam1 ""}} {
  1315.   global tkVersion
  1316.   global xfConf
  1317.  
  1318.   if {$xfType == 0 && !$xfConf(applyParameters)} {
  1319.     return
  1320.   }
  1321.   if {"[info commands $xfW]" == ""} {
  1322.     return
  1323.   }
  1324.   XFMiscSetSymbolicName $xfW \
  1325.     [.xf${xfClass}Config4.params1.params2.symname.symname get]
  1326.  
  1327.   XFMiscSetResource $xfW activebackground \
  1328.     [.xf${xfClass}Config4.params1.params2.abg.abg get]
  1329.   XFMiscSetResource $xfW activeborderwidth \
  1330.     [.xf${xfClass}Config4.params1.params2.aborderwidth.aborderwidth get]
  1331.   XFMiscSetResource $xfW activeforeground \
  1332.     [.xf${xfClass}Config4.params1.params2.afg.afg get]
  1333.   XFMiscSetResource $xfW background \
  1334.     [.xf${xfClass}Config4.params1.params2.bg.bg get]
  1335.   XFMiscSetResource $xfW borderwidth \
  1336.     [.xf${xfClass}Config4.params1.params2.borderwidth.borderwidth get]
  1337.   XFMiscSetResource $xfW cursor \
  1338.     "[.xf${xfClass}Config4.params1.params2.cursor.cursor get]"
  1339.   XFMiscSetResource $xfW disabledforeground \
  1340.     [.xf${xfClass}Config4.params1.params2.dfg.dfg get]
  1341.   XFMiscSetResource $xfW font \
  1342.     [.xf${xfClass}Config4.params1.params2.font.font get]
  1343.   if {$xfConf(kanji)} {
  1344.     XFMiscSetResource $xfW kanjifont \
  1345.       [.xf${xfClass}Config4.params1.params2.kanjifont.kanjifont get]
  1346.   }
  1347.   XFMiscSetResource $xfW foreground \
  1348.     [.xf${xfClass}Config4.params1.params2.fg.fg get]
  1349.   if {$tkVersion >= 3.1} {
  1350.     XFMiscSetResource $xfW postcommand \
  1351.       [XFMiscGetText .xf${xfClass}Config4.params1.params2.command.command.command]
  1352.   }
  1353.   XFMiscSetResource $xfW selector \
  1354.     [.xf${xfClass}Config4.params1.params2.selector.selector get]
  1355. }
  1356.  
  1357. ##########
  1358. # Procedure: XFMenuSetMenu5
  1359. # Description: set menu parameters
  1360. # Arguments: xfW - the widget
  1361. #            xfType - the type of setting (1 = set always, 0 = set
  1362. #                     only if permanent apply is on)
  1363. #            xfClass - the class we configure
  1364. #            xfMC - the edit menu counter
  1365. #            xfParam1 - ignored parameter
  1366. # Returns: none
  1367. # Sideeffects: none
  1368. ##########
  1369. proc XFMenuSetMenu5 {xfW xfType xfClass xfMC {xfParam1 ""}} {
  1370.   global xfConf
  1371.   global xfMisc
  1372.  
  1373.   if {$xfType == 0 && !$xfConf(applyParameters)} {
  1374.     return
  1375.   }
  1376.   if {"[info commands $xfW]" == ""} {
  1377.     return
  1378.   }
  1379.   XFMiscSetSymbolicName $xfW \
  1380.     [.xf${xfClass}Config5$xfMC.params1.params2.symname.symname get]
  1381.  
  1382.   set xfCounter 0
  1383.   set xfLast [$xfW index last]
  1384.   if {"$xfLast" == "none"} {
  1385.     set xfLast -1
  1386.   }
  1387.   while {$xfCounter <= $xfLast} {
  1388.     $xfW delete 0
  1389.     incr xfCounter 1
  1390.   }
  1391.   set xfCounter 0
  1392.   set xfLast \
  1393.     [.xf${xfClass}Config5$xfMC.params1.params2.frame1.children.items.items size]
  1394.   while {$xfCounter < $xfLast} {
  1395.     set xfTmpValue [lindex $xfMisc(menu,$xfMC,menuDef) $xfCounter]
  1396.     case [.xf${xfClass}Config5$xfMC.params1.params2.frame1.children.items.items get $xfCounter] in {
  1397.       {<cascade*} {
  1398.         catch "$xfW add cascade"
  1399.         catch "$xfW entryconfigure $xfCounter \
  1400.           -accelerator \{[lindex $xfTmpValue 1]\} \
  1401.           -command \{[lindex $xfTmpValue 4]\} \
  1402.           -label \{[lindex $xfTmpValue 6]\} \
  1403.           -menu \{[lindex $xfTmpValue 7]\} \
  1404.           -state [lindex $xfTmpValue 10] \
  1405.           -underline \{[lindex $xfTmpValue 11]\}"
  1406.       }
  1407.       {<check*} {
  1408.         catch "$xfW add checkbutton"
  1409.         catch "$xfW entryconfigure $xfCounter \
  1410.           -accelerator \{[lindex $xfTmpValue 1]\} \
  1411.           -command \{[lindex $xfTmpValue 4]\} \
  1412.           -label \{[lindex $xfTmpValue 6]\} \
  1413.           -state \{[lindex $xfTmpValue 10]\} \
  1414.           -underline \{[lindex $xfTmpValue 11]\}"
  1415.         if {"[lindex $xfTmpValue 8]" != ""} {
  1416.           catch "$xfW entryconfigure $xfCounter \
  1417.             -offvalue \{[lindex $xfTmpValue 8]\}"
  1418.         }
  1419.         if {"[lindex $xfTmpValue 9]" != ""} {
  1420.           catch "$xfW entryconfigure $xfCounter \
  1421.             -onvalue \{[lindex $xfTmpValue 9]\}"
  1422.         }
  1423.         if {"[lindex $xfTmpValue 13]" != ""} {
  1424.           catch "$xfW entryconfigure $xfCounter \
  1425.             -variable \{[lindex $xfTmpValue 13]\}"
  1426.         }
  1427.       }
  1428.       {<radio*} {
  1429.         catch "$xfW add radiobutton"
  1430.         catch "$xfW entryconfigure $xfCounter \
  1431.           -accelerator \{[lindex $xfTmpValue 1]\} \
  1432.           -command \{[lindex $xfTmpValue 4]\} \
  1433.           -label \{[lindex $xfTmpValue 6]\} \
  1434.           -state \{[lindex $xfTmpValue 10]\} \
  1435.           -underline \{[lindex $xfTmpValue 11]\}"
  1436.         if {"[lindex $xfTmpValue 12]" != ""} {
  1437.           catch "$xfW entryconfigure $xfCounter \
  1438.             -value \{[lindex $xfTmpValue 12]\}"
  1439.         }
  1440.         if {"[lindex $xfTmpValue 13]" != ""} {
  1441.           catch "$xfW entryconfigure $xfCounter \
  1442.             -variable \{[lindex $xfTmpValue 13]\}"
  1443.         }
  1444.       }
  1445.       {<separator*} {
  1446.         catch "$xfW add separator"
  1447.       }
  1448.       {<command*} {
  1449.         catch "$xfW add command"
  1450.         catch "$xfW entryconfigure $xfCounter \
  1451.           -accelerator \{[lindex $xfTmpValue 1]\} \
  1452.           -command \{[lindex $xfTmpValue 4]\} \
  1453.           -label \{[lindex $xfTmpValue 6]\} \
  1454.           -state \{[lindex $xfTmpValue 10]\} \
  1455.           -underline \{[lindex $xfTmpValue 11]\}"
  1456.       }
  1457.     }
  1458.  
  1459.     if {"[lindex $xfTmpValue 0]" != ""} {
  1460.       catch "$xfW entryconfigure $xfCounter \
  1461.         -activebackground \{[lindex $xfTmpValue 0]\}"
  1462.     }
  1463.     if {"[lindex $xfTmpValue 2]" != ""} {
  1464.       catch "$xfW entryconfigure $xfCounter \
  1465.         -background \{[lindex $xfTmpValue 2]\}"
  1466.     }
  1467.     if {"[lindex $xfTmpValue 3]" != ""} {
  1468.       if {"[string index [lindex $xfTmpValue 3] 0]" == "@"} {
  1469.         if {[catch "$xfW entryconfigure $xfCounter \
  1470.               -bitmap \{[lindex $xfTmpValue 3]\}" xfResult]} {
  1471.           XFProcError "$xfResult"
  1472.         }
  1473.       } {
  1474.         if {[file exists [lindex $xfTmpValue 3]]} {
  1475.           if {[catch "$xfW entryconfigure $xfCounter \
  1476.                 -bitmap \{@[lindex $xfTmpValue 3]\}" xfResult]} {
  1477.             XFProcError "$xfResult"
  1478.           }
  1479.         } {
  1480.           if {[catch "$xfW entryconfigure $xfCounter \
  1481.                 -bitmap \{[lindex $xfTmpValue 3]\}" xfResult]} {
  1482.             XFProcError "$xfResult"
  1483.           }
  1484.         }
  1485.       }
  1486.     } {
  1487.       if {![string match "<separator*" [.xf${xfClass}Config5$xfMC.params1.params2.frame1.children.items.items get $xfCounter]]} {
  1488.         catch "$xfW entryconfigure $xfCounter -bitmap {}"
  1489.       }
  1490.     }
  1491.     if {"[lindex $xfTmpValue 5]" != ""} {
  1492.       catch "$xfW entryconfigure $xfCounter \
  1493.         -font \{[lindex $xfTmpValue 5]\}"
  1494.     }
  1495.     if {$xfConf(kanji)} {
  1496.       if {"[lindex $xfTmpValue 14]" != ""} {
  1497.         catch "$xfW entryconfigure $xfCounter \
  1498.           -kanjifont \{[lindex $xfTmpValue 14]\}"
  1499.       }
  1500.     }
  1501.     incr xfCounter 1
  1502.   }
  1503. }
  1504.  
  1505. # eof
  1506.  
  1507.